# 导包
# 引入自动化工具 用于创建浏览器驱动对象，从而针对web软件进行测试
from selenium import webdriver
# 引入 页面元素选择工具 只有选择上了才能对其进行操作
from selenium.webdriver.common.by import By
# 引入时间歌工具
import time
# 导入鼠标操作工具包
from selenium.webdriver.common.action_chains import ActionChains
# 导包键盘操作包：
from selenium.webdriver.common.keys import Keys
# 导入元素显示等待工具包
from selenium.webdriver.support.wait import WebDriverWait

# 创建浏览器驱动对象，启动项目
driver=webdriver.Chrome();
driver.get("http://localhost:8080/EasyBuy/Home?action=index")
# 窗口最大化
driver.maximize_window()
# 全局元素默认等待3秒
driver.implicitly_wait(3)
# 暂停3秒
time.sleep(2)
# 捕获元素。进行操作
driver.find_element(By.LINK_TEXT, "登录").click();  # 跳转登录界面
driver.find_element(By.CSS_SELECTOR, "#loginName").send_keys("admin");  # 账号
driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456");  # 密码
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, ".log_btn").click();  # 确认登录
time.sleep(2)
# 物品购买
driver.find_element(By.LINK_TEXT,"化妆品").click();  # 跳转 化妆品 类 购买旗下物品
# 下拉滚动条
time.sleep(2)
xla="window.scrollTo(0,300)" # X轴 ，Y轴
# 执行滚动条拉到中层操作
driver.execute_script(xla)

# 主窗口
index=driver.current_window_handle;

# 将香奈儿 加入购物车
time.sleep(2)
driver.find_element(By.CSS_SELECTOR,".cate_list li .img").click(); #此时打开了新窗口，所需要 多窗口工具的使用
# 获取所有窗口与主窗口不对，不是主窗口就是现在打开的新窗口 （因为我们只打开了除了 index 窗口的 香奈儿 购买窗口）
hand=driver.window_handles;
for i in hand:
    if i != index:
        driver.switch_to.window(i);  # 切换 香奈儿 购买窗口
        # # 下拉滚动条
        time.sleep(2)
        xla2 = "window.scrollTo(0,150)"  # X轴 ，Y轴
        # 执行滚动条拉到加入购物车 选项位置
        driver.execute_script(xla2);
        time.sleep(3)  # 等待元素加载
        break
# 单击 购物车 选项
driver.find_element(By.CSS_SELECTOR,".des_join > span").click();
# 叉掉 加入成功 提示
time.sleep(3) # 等待元素加载
driver.find_element(By.CSS_SELECTOR,"#MyDiv1>.white_d>.notice_t>span").click();
# 返回主页 查看效果 menu_bg
time.sleep(1) # 等待元素加载
# # 当前 商品详细信息 窗口    没有重新打开新窗口 所以不需要使用多窗口 工具
# xnaie=driver.current_window_handle;
# 返回首页
driver.find_element(By.LINK_TEXT,"首页").click();

# # 鼠标悬浮 主页右侧 购物车图标 查看结果
action = ActionChains(driver);  #创建鼠标操作对象
action.move_to_element(driver.find_element(By.CSS_SELECTOR,".top>.i_car")).perform();

time.sleep(3)
driver.quit();
